package com.xc.xcrpc.fault.retry;

import com.xc.xcrpc.loadbalancer.LoadBalancer;
import com.xc.xcrpc.loadbalancer.RoundRobinLoadBalancer;
import com.xc.xcrpc.spi.SpiLoader;
import lombok.extern.slf4j.Slf4j;

/**
 * 重试机制工厂（工厂模式，用于获取重试策略对象）
 * @author zqx
 * @since 2024/10/1
 */
@Slf4j
public class RetryStrategyFactory {


    static {
        log.info("加载重试");
        SpiLoader.load(RetryStrategy.class);
        log.info("加载重试完成");
    }

    /**
     * 默认重试器
     */
    private static final RetryStrategy DEFAULT_RETRY_STRATEGY = new NoRetryStrategy();

    /**
     * 获取实例
     */
    public static RetryStrategy getInstance(String key){
        return SpiLoader.getInstance(RetryStrategy.class,key);
    }

}
